/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2022年8月29日
 * V4.0
 */
package com.jphenix.standard.servlet.api;

import com.jphenix.standard.docs.ClassInfo;

/**
 * Servlet接口
 * 
 * 2022-09-04 隔离了ServletApi，兼容新老Tomcat
 * 
 * @author MBG
 * 2022年8月29日
 */
@ClassInfo({"2022-09-04 21:58","Servlet接口"})
public interface IServlet {

	/**
	 * 获取Servlet配置信息类
	 * @return Servlet配置信息类
	 * 2022年8月29日
	 * @author MBG
	 */
	IServletConfig getServletConfig();
	
	/**
	 * 调用服务
	 * @param req        请求对象
	 * @param res        反馈对象
	 * @throws Exception 异常
	 * 2022年8月29日
	 * @author MBG
	 */
	void service(IRequest req, IResponse res) throws Exception;
	
	/**
	 * 初始化Servlet
	 * @param config     配置信息类
	 * @throws Exception 异常
	 * 2022年8月29日
	 * @author MBG
	 */
	void init(IServletConfig config) throws Exception;
	
	/**
	 * 获取Servlet服务信息
	 * @return Servlet服务信息
	 * 2022年8月29日
	 * @author MBG
	 */
	String getServletInfo();
	
	/**
	 * 获取Servlet上下文对象
	 * @return Servlet上下文对象
	 * 2022年8月29日
	 * @author MBG
	 */
	IServletContext getServletContext();
	
	/**
	 * 终止Servlet
	 * 2022年8月29日
	 * @author MBG
	 */
	void destroy();
	
	/**
	 * 输出日志
	 * @param message 日志信息
	 * 2022年8月29日
	 * @author MBG
	 */
	void log(String message);
	
	/**
	 * 输出日志
	 * @param message 日志信息
	 * @param e       异常对象
	 * 2022年8月29日
	 * @author MBG
	 */
	void log(String message,Throwable e);
}
